/**********************************************************/
/* Program that use the raw data otbained from SAS Files  */
/* to estimate total wage per year and allow a unique industry and occupation per year */
/***************************************************************************************/
/* Compress SAS data
cd "C:\Users\AJUSTSA_G_VERDUGO\Documents\AJUSTSA_G_VERDUGO\Documents\"
use "ImmPanelRevis19\donnees\indiv_dispm.dta", clear
compress
save  "ImmPanelRevis19\donnees\indiv_dispm.dta", replace

use "ImmPanelRevis19\donnees\indiv_dispw.dta", clear
compress
save  "ImmPanelRevis19\donnees\indiv_dispw.dta", replace
 */
/***********************/
/* 1- Permanent income */
/***********************/
clear
cd "C:\Users\Public\Documents\ImmPanelRevis19\"

use "ImmPanelRevis19\donnees\indiv_dispm.dta", clear
append using "ImmPanelRevis19\donnees\indiv_dispw.dta"
cd "ImmPanelRevis19\donnees\"
compress

/* échantillon avec selection */

/* sous-échantillon pour travailler plus vite *
use "ImmPanelRevis19\donnees\indiv_dispm.dta", clear
append using "ImmPanelRevis19\donnees\indiv_dispw.dta"
contract nninouv
gen select=rbinomial(1,0.01)
drop _freq
save temp.dta, replace
use "ImmPanelRevis19\donnees\indiv_dispm.dta", clear
append using "ImmPanelRevis19\donnees\indiv_dispw.dta"
sort nninouv
joinby nninouv using temp.dta, unm(m)
drop _merge
drop if select==0
*/
save temp.dta, replace

use temp.dta, clear
/* groupes pour calculer les moyennes */
gen group=1 if an==1976 | an==1977 | an==1978 | an==1979
replace group=2 if an==1980 | an==1982 | an==1984 | an==1985
replace group=3 if an==1988 | an==1989 | an==1991 | an==1992 
replace group=4 if an==1997 | an==1998 | an==1999 | an==2000 | an==2001 
replace group=5 if an==2003 | an==2004 | an==2005 | an==2006 | an==2007
drop if missing(group)

/* real wages */
joinby an using	 "C:\Users\Public\Documents\ImmPanelRevis19\ImmPanelRevis19\Donnees\ipc_ocdeSML.dta", unm(m)
drop _merge
replace sn=sn*(100/ipc_ocde)

/* concatenate multiple jobs in one year */
save temp.dta, replace
contract nninouv an
gen mult=(_freq>1)
drop if _freq==1
rename _freq nmult
save mult.dta, replace
use temp.dta, clear
joinby nninouv an using mult.dta, unm(m)
drop _merge
drop if missing(mult)

/* fait la somme du nombre de jours 
et du salaire net sur les multiples emplois */
/* durée de la paye total */
/* durée paye normalisée & salaire réel total */
save tempCOL.dta, replace
collapse (sum) dps=dp sns=sn, by(nninouv an) fast
save dps.dta, replace
use tempCOL.dta, clear

/* fusionne avec */
/* durée de paye totale */
use temp, clear
joinby nninouv an using dps.dta, unm(m)
drop _merge

/* garde comme référence 
la firme (ie secteur) 
avec le plus grand salaire */
sort nninouv an sn
by nninouv an: drop if _n != _N
egen indiv=group(nninouv)
xtset indiv an
joinby nninouv an using mult.dta, unm(m)
drop _merge
replace mult=0 if missing(mult)

/* remplace salaire en salaire max et durée de
paie totale dans dp et sn pour ceux dont on a de multiples
activitées dans une année */
replace dp=dps if mult==1
replace sn=sns if mult==1
replace dp=360 if dp>360

gen fy=(dp==360)

/* Calcul du "revenu permanent" => moyennes autour des 5 RP */
/* utilise plusieur définitions */

save temp.dta, replace
save tempattrit.dta, replace

/* calcule la moyenne par individu à l'intérieur d'un groupe */
/* durée paye & salaire total */
save tempCOL.dta, replace
collapse (sum) dpP=dp snPT=sn (mean) snP=sn (count) snPN=sn , by(nninouv group) fast
save dps.dta, replace

/* rajout l'année dans les groupes */
use dps.dta, clear
gen an=1976 if group==1
replace an=1982 if group==2
replace an=1991 if group==3
replace an=1999 if group==4
replace an=2007 if group==5
drop group
save dps.dta, replace

/* échantillon initial, garde seulement une observation */
use temp.dta, clear
gen ang=1 if an==1976
replace ang=2 if an==1977
replace ang=3 if an==1978
replace ang=1 if an==1982
replace ang=2 if an==1980
replace ang=3 if an==1984
replace ang=1 if an==1989
replace ang=2 if an==1991
replace ang=3 if an==1992
replace ang=1 if an==1998
replace ang=2 if an==1999
replace ang=3 if an==2000
replace ang=1 if an==2005
replace ang=2 if an==2006
replace ang=3 if an==2007
sort nninouv group ang
by nninouv group: drop if _n != 1
drop an
gen an=1976 if group==1
replace an=1982 if group==2
replace an=1991 if group==3
replace an=1999 if group==4
replace an=2007 if group==5
joinby nninouv an using dps.dta, unm(m)
drop _merge

/* rajoute un zéro si missing */
gen stg=(360*3) if group==1
replace stg=(360*3) if group==2
replace stg=(360*4) if group==3
replace stg=(360*5) if group==4
replace stg=(360*4) if group==5

/* repère les individus pour lesques observation complète sur la période */
gen obscp=(snPN==3 & group==1)
replace obscp=1 if snPN==3 & group==2
replace obscp=1 if snPN==4 & group==3
replace obscp=1 if snPN==5 & group==4
replace obscp=1 if snPN==4 & group==5

/* définition 1: salaire observé sur l'ensemble de la période 
avec revenus >0 ssi présent chaque années */
gen sndPT1=snPT/dpP if obscp
/* définition 2: moyenne observée même si manque */
gen sndPT2=snPT/dpP
/* définition 3: moyenne observé avec zéro si missing */
gen sndPT3=snPT/stg
save "C:\Users\Public\Documents\ImmPanelRevis19\ImmPanelRevis19\Donnees\permanent_revis5y.dta", replace
